home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue59 / Arch / Extended Sample / UnitFrameResultSetBase.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-05-22  |  3.2 KB  |  111 lines

  1. unit UnitFrameResultSetBase;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   UnitObjectResultSetBase, Menus, Grids, DBGrids, Db, ImgList, ActnList,
  8.   UnitFormBase;
  9.  
  10. type
  11.   TFrameResultSetBase = class(TFrame)
  12.     ActionListFrameResultSetBase: TActionList;
  13.     ActionFrameResultSetBaseOpen: TAction;
  14.     ImageListFrameResultSetBase: TImageList;
  15.     DataSourceFrameResultSetBase: TDataSource;
  16.     DBGridFrameResultSetBase: TDBGrid;
  17.     PopupMenuFrameResultSetBase: TPopupMenu;
  18.     Open1: TMenuItem;
  19.     procedure DBGridFrameResultSetBaseTitleClick(Column: TColumn);
  20.     procedure ActionFrameResultSetBaseOpenUpdate(Sender: TObject);
  21.     procedure DBGridFrameResultSetBaseColumnMoved(Sender: TObject;
  22.       FromIndex, ToIndex: Integer);
  23.     procedure ActionFrameResultSetBaseOpenExecute(Sender: TObject);
  24.   private
  25.     FMovingColumn: boolean;
  26.  
  27.     FResultSetObject: TObjectResultSetBase;
  28.  
  29.     procedure SetResultSetObject(aResultSetObject: TObjectResultSetBase);
  30.   protected
  31.       function GetClassOfFormToBeOpened: TFormBaseClass; virtual;
  32.       function GetResultSetClass: TObjectResultSetClass; virtual; abstract;
  33.   public
  34.     constructor Create(Owner: TComponent); override;
  35.     destructor Destroy; override;
  36.     property ResultSetObject: TObjectResultSetBase read FResultSetObject write SetResultSetObject;
  37.     procedure OpenEntityForm;
  38.   end;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. { TFrameResultSetBase }
  45.  
  46. procedure TFrameResultSetBase.SetResultSetObject(
  47.   aResultSetObject: TObjectResultSetBase);
  48. begin
  49.   if (ResultSetObject <> aResultSetObject) then begin
  50.     FResultSetObject := aResultSetObject;
  51.     if (ResultSetObject = NIL) then
  52.       DataSourceFrameResultSetBase.DataSet := NIL
  53.     else
  54.       DataSourceFrameResultSetBase.DataSet := ResultSetObject.Query;
  55.   end; // then begin
  56. end;
  57.  
  58. procedure TFrameResultSetBase.DBGridFrameResultSetBaseColumnMoved(
  59.   Sender: TObject; FromIndex, ToIndex: Integer);
  60. begin
  61.   FMovingColumn := TRUE;
  62. end;
  63.  
  64. procedure TFrameResultSetBase.DBGridFrameResultSetBaseTitleClick(Column: TColumn);
  65. begin
  66.   inherited;
  67.   if not(FMovingColumn) then begin
  68.     ResultSetObject.SqlOrderByClause := Column.Field.FieldName;
  69.     ResultSetObject.RefreshResultSet;
  70.   end;
  71.   FMovingColumn := FALSE;
  72. end;
  73.  
  74. procedure TFrameResultSetBase.ActionFrameResultSetBaseOpenUpdate(
  75.   Sender: TObject);
  76. begin
  77.   ActionFrameResultSetBaseOpen.Enabled := not ResultSetObject.IsEmpty;
  78. end;
  79.  
  80. function TFrameResultSetBase.GetClassOfFormToBeOpened: TFormBaseClass;
  81. begin
  82.   Result := NIL;
  83. end;
  84.  
  85. constructor TFrameResultSetBase.Create;
  86. begin
  87.   inherited;
  88.   ResultSetObject := GetResultSetClass.FetchReference(Self, TFormBase.NewInteger) as TObjectResultSetBase;
  89. end;
  90.  
  91. destructor TFrameResultSetBase.Destroy;
  92. begin
  93.   ResultSetObject.FreeReference(Self);
  94.   ResultSetObject := NIL;
  95.   inherited;
  96. end;
  97.  
  98. procedure TFrameResultSetBase.ActionFrameResultSetBaseOpenExecute(
  99.   Sender: TObject);
  100. begin
  101.   OpenEntityForm;
  102. end;
  103.  
  104. procedure TFrameResultSetBase.OpenEntityForm;
  105. begin
  106.   if (GetClassOfFormToBeOpened <> NIL) then
  107.     GetClassOfFormToBeOpened.FetchForm(ResultSetObject.SelectedKey).ShowForm;
  108. end;
  109.  
  110. end.
  111.